#include <iostream>
#include <algorithm>
using namespace std;
constexpr int MAXN = 1005;
int N, R;
int X[MAXN];
void solve();

int main() {
    cin >> N >> R;
    for (int i = 0; i < N; i++)
        cin >> X[i];
    solve();
    return 0;
}

void solve() {
    sort(X, X + N);
    int i = 0, result = 0;
    while (i < N) {
        
        //  s是没有覆盖的最左边的点
        int s = X[i++];
        // 寻找, 直到不满足覆盖关系
        while (i < N && X[i] <= s + R) i++; // 这里的i++处理得很妙

        // p就是对应的标记点
        int p = X[i - 1];

        // 寻找, 直到最右边的点
        while (i < N && X[i] <= p + R) i++;
        result++;
    }
    cout << result << endl;

}